2相ロック Two-Phase Lock(2PL)
定義
すべてのトランザクションにおいて読み書きのために必要なすべてのロックが完了する以前にそれらがアンロックされることはない
ロックしていくフェーズを成長相、アンロックしていくフェーズを縮退相
スケージュールがlegalとはすでに他のトランザクションがロックしているデータ項目を別のトランザクションがロックすることがない場合とする
スケジュールS1とS2が相反等価とは相反しているすべてのステップの順序がS1とS2で同一
スケジュールS1が相反直列化可能とはある直列スケジュールS2が存在していてS1とS2が相反等価のときをいう
もし各トランザクションが2PLに従うならば相反直列化可能なスケジュールのみが順法
トランザクションがコミットかロールバックに到達したらすべてアンロックする
多くの実装はこっちらしい
共有ロックについてはロックする必要がなくなった段階でアンロックする